package top.revery.account.service;


import lombok.extern.slf4j.Slf4j;
import org.springframework.cloud.commons.util.IdUtils;
import org.springframework.stereotype.Service;

import top.revery.api.config.WxConfig;
import top.revery.api.util.HttpClientUtils;
import top.revery.api.util.IdUtil;
import top.revery.api.util.PayCommonUtil;
import top.revery.api.util.XMLUtil;

import java.math.BigDecimal;
import java.util.HashMap;
import java.util.Map;

/**
 * @author denghao
 * @title
 * @package
 * @date 2019/12/24 15:34
 */
@Service
@Slf4j
public class WxService {

  //  @GlobalTransactional
    public String wxpay(BigDecimal money) throws Exception {
        int mo = Integer.valueOf(money.toString());
        int a = mo * 100;
        String orderNo = IdUtil.orderNumber();
        Map<String, Object> map = new HashMap<String, Object>();
        map.put("appid", WxConfig.APP_ID); // 公众账号ID(配置文件里的属性)
        map.put("mch_id", WxConfig.MCH_ID); // 商户号(配置文件里的属性)
        map.put("device_info", "WEB"); // 设备号(配置文件里的属性)
        map.put("notify_url", WxConfig.NOTIFY_URL); // 异步通知地址(配置文件里的属性)
        map.put("trade_type", "NATIVE"); // 交易类型(表示扫码支付 详情看微信公众平台)
        map.put("out_trade_no", orderNo); // 商户订单号(由项目定)
        map.put("body", WxConfig.BODY); // 商品描述(由项目定)
        map.put("total_fee", String.valueOf(a)); // 标价金额(单位 '分')
        // map.put("spbill_create_ip", getRemortIP(request)); // 终端IP(正式环境下用)
        map.put("spbill_create_ip", "58.62.204.131"); // 终端IP(测试环境)
        map.put("nonce_str", PayCommonUtil.getRandomString(30)); // 随机字符串(StringUtil工具类提供)
        map.put("sign", PayCommonUtil.getSign(map)); // 签名(同类中的getSign方法提供)
        String xml = XMLUtil.genXml(map); //发送xml  (XmlUtil工具类提供)
        System.out.println(xml);
        //  return xml;
        String in = HttpClientUtils.send(WxConfig.GATEURL, xml);
        String code_url = PayCommonUtil.getCodeUrl(in);
        return code_url;
    }
}
